package com.atguigu.gmall.all.controller;

import com.atguigu.gmall.cart.client.CartFeignClient;
import com.atguigu.gmall.product.client.model.cart.CartInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

@Controller
public class CartController {

    @Autowired
    private CartFeignClient cartFeignClient;

    //加入购物车成功页面
    @GetMapping("/addCart.html")
    public String addCart(Long skuId, Integer skuNum,  RedirectAttributes redirectAttributes){

            //返回值 库存对象
        CartInfo cartInfo=cartFeignClient.addCart(skuId,skuNum);
        //cartInfo.setSkuNum(skuNum);  //添加商品数量 在添加购物车成功页面显示添加的数量
        //model.addAttribute("cartInfo",cartInfo);  //添加商品信息 在添加购物车成功页面显示添加的信息

        //相当于 http://cart.gmall.com/toCart.html?"skuId" + skuId & "skuNum" + skuNum
        redirectAttributes.addAttribute("skuId",skuId);
        redirectAttributes.addAttribute("skuNum",skuNum);

        return "redirect:http://cart.gmall.com/toCart.html";
    }


    //重定向到 购物车添加成功页面  解决在购物车添加成功页面 多次刷新 在购物车里多次更新添加商品数量
    @GetMapping("/toCart.html")
    public String toCart(Long skuId, Integer skuNum, Model model){
        //返回值 库存对象
        CartInfo cartInfo=cartFeignClient.toCart(skuId);
        if (cartInfo != null){
            cartInfo.setSkuNum(skuNum);  //添加商品数量 在添加购物车成功页面显示添加的数量
            model.addAttribute("cartInfo",cartInfo);  //添加商品信息 在添加购物车成功页面显示添加的信息
            return "cart/addCart";
        }else{
            //之前未登录时有购物车  用户突然登录了  没有购物车  导致空指针异常  降级处理 直接返回首页
            return "redirect:http://www.gmall.com";
        }
    }

    //去购物车结算
    @GetMapping("/cart.html")
    public String cart(){
        return "cart/index";
    }
}
